# -*- coding: utf-8 -*- 
# @project : 《剑指offer》
# @Author : created by bensonrachel on 2021/6/9
# @File : 旋转数组的最小数字.py

class Solution(object): #二分 时间复杂度为O（logn）
    def findMin(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        n = len(nums)-1
        if(not nums):return -1#空
        while(n>0 and nums[n]==nums[0]): n -= 1 #把第二段的后面等于的nums【0】的都去掉然后严格小于nums【0】
        if(nums[n] > nums[0]) :return nums[0]#严格递增的情况，第二段没了，删到只剩下一段的
        l = 0;r = n
        while(l<r):
            mid = (l + r) // 2#取下界
            if(nums[mid]>=nums[0]): l = mid+1#在右边
            else:
                r = mid#在左边
        return nums[r]#nums[l]也行的